﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIPDTO;
using SIPBLL;

namespace SIP
{
    public partial class ConstanciaMatrimonio : System.Web.UI.Page
    {
        #region ** Declaración de variables

        private string _valparametro1 = "Num.Libro";
        private string _valparametro2 = "Num.Folio";
        private string _valparametro3 = "Num.Asiento";
        SIPBLL.SIPBLL _bll = new SIPBLL.SIPBLL();
        dtoPersonas _dtopersona = new dtoPersonas();
        List<dtoPersonas> _dtpersona = new List<dtoPersonas>();
        List<dtoParametros> _dtparametro = new List<dtoParametros>();
        dtoError _resp = new dtoError();
        dtoParametros _dtoparametro = new dtoParametros();
        dtoClerigo _dtoclerigo = new dtoClerigo();
        dtoMatrimonio _dtoMatrimonio = new dtoMatrimonio();
        List<dtoTiposIdentificacion> _dttiposid = new List<dtoTiposIdentificacion>();
        List<dtoClerigo> _dtclerigo = new List<dtoClerigo>();
        int parroquia;

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                parroquia = Convert.ToInt16(Session["Parroquia"]);
                ObtenerSacerdote(parroquia);
                ObtenerTiposId();
                txtAsiento.Text = Convert.ToString (ObtenerParametroAsiento());
                txtLibro.Text = Convert.ToString(ObtenerParametroLibro());
                txtFolio.Text = Convert.ToString(ObtenerParametroFolio());
             
            }
        }

     
       protected void Registrar(object sender, EventArgs e)
        {

            if (Page.IsValid == true)
            {
                _dtoMatrimonio.IdParroquia = Convert.ToInt16(Session["Parroquia"]); ;
                _dtoMatrimonio.NumAsiento = Convert.ToInt16(txtAsiento.Text);
                _dtoMatrimonio.NumFolio = Convert.ToInt16(txtFolio.Text);
                _dtoMatrimonio.NumLibro = Convert.ToInt16(txtLibro.Text);
                _dtoMatrimonio.FechaMatrimonio = dtFecha.Value.ToString();

                //Se extrae el tipo y la identificacion del sacerdote seleccionado de la lista
                    char[] delimiterChars = { '-' };
                    string Id = ddlSacerdote.SelectedValue;
                    string[] words = Id.Split(delimiterChars);
                    _dtoMatrimonio.TipoIdentificacionClerigo = Convert.ToInt16(words[0].ToString());
                    _dtoMatrimonio.IdClerigo = words[1].ToString();

                    //Se obtiene la información de los esposos
                    _dtoMatrimonio.TipoIdentificacionEsposo = Convert.ToInt16(ddlTipoIdentificacionEsposo.SelectedValue);
                    _dtoMatrimonio.IdEsposo = mskCedulaEsposo.Text;
                    _dtoMatrimonio.TipoIdentificacionEsposa = Convert.ToInt16(ddlTipoIdentificacionEsposa.SelectedValue);
                    _dtoMatrimonio.IdEsposa = mskCedulaEsposa.Text;

                    //Se obtiene la información de los padrinos
                    _dtoMatrimonio.TipoIdentificacionPadrino = Convert.ToInt16(ddlTipoIdentificacionPadrino.SelectedValue);
                    _dtoMatrimonio.IdPadrino = mskCedulaPadrino.Text;
                    _dtoMatrimonio.TipoIdentificacionMadrina = Convert.ToInt16(ddlTipoIdentificacionMadrina.SelectedValue);
                    _dtoMatrimonio.IdMadrina = mskCedulaMadrina.Text;
                    // se crea el registro de la confirma
                    _resp = _bll.RegistrarMatrimonio(_dtoMatrimonio);
                    if (_resp.IdError == 100)
                    {
                        WebMsgBox.Show(_resp.Mensaje);
                        CleanControl(this.Controls);
                       //Actualiza los parámetros
                        ActualizaParametrosConfirma();
                        txtAsiento.Text = Convert.ToString(ObtenerParametroAsiento());
                        txtLibro.Text = Convert.ToString(ObtenerParametroLibro());
                        txtFolio.Text = Convert.ToString(ObtenerParametroFolio());
                    }
                    else
                    {
                        WebMsgBox.Show(_resp.Mensaje);
                    }
              
            }
           
        }

       protected void ddlTipoIdentificacionMadrina_SelectedIndexChanged(object sender, EventArgs e)
        {
            //se asigna el tamano a aceptar para el campo identificación

            if (ddlTipoIdentificacionMadrina.SelectedItem.Text == "Cédula")
            {
                CedulaMadrina.Mask = "999999999";
                mskCedulaMadrina.Text = "";
                mskCedulaMadrina.Enabled = true;
                //ActivarBotones();
                mskCedulaPadrino.Focus();
            }
            if (ddlTipoIdentificacionMadrina.SelectedItem.Text == "Pasaporte")
            {
                CedulaMadrina.Mask = "999999999999";
                mskCedulaMadrina.Text = "";
                mskCedulaMadrina.Enabled = true;
                //ActivarBotones();
                mskCedulaMadrina.Focus();
            }
            if ((ddlTipoIdentificacionMadrina.SelectedItem.Text == "Cédula Residencia Permanente") || (ddlTipoIdentificacionMadrina.SelectedItem.Text == "Cédula Residencia Temporal"))
            {
                CedulaMadrina.Mask = "9999999999999999";
                mskCedulaMadrina.Text = "";
                mskCedulaMadrina.Enabled = true;
                //ActivarBotones();
                mskCedulaMadrina.Focus();
            }
        }

       protected void ddlTipoIdentificacionPadrino_SelectedIndexChanged(object sender, EventArgs e)
        {
            //se asigna el tamano a aceptar para el campo identificación

            if (ddlTipoIdentificacionPadrino.SelectedItem.Text == "Cédula")
            {
                CedulaPadrino.Mask = "999999999";
                mskCedulaPadrino.Text = "";
                mskCedulaPadrino.Enabled = true;
                //ActivarBotones();
                mskCedulaPadrino.Focus();
            }
            if (ddlTipoIdentificacionPadrino.SelectedItem.Text == "Pasaporte")
            {
                CedulaPadrino.Mask = "999999999999";
                mskCedulaPadrino.Text = "";
                mskCedulaPadrino.Enabled = true;
                //ActivarBotones();
                mskCedulaPadrino.Focus();
            }
            if ((ddlTipoIdentificacionPadrino.SelectedItem.Text == "Cédula Residencia Permanente") || (ddlTipoIdentificacionPadrino.SelectedItem.Text == "Cédula Residencia Temporal"))
            {
                CedulaPadrino.Mask = "9999999999999999";
                mskCedulaPadrino.Text = "";
                mskCedulaPadrino.Enabled = true;
                //ActivarBotones();
                mskCedulaPadrino.Focus();
            }
        }

       protected void ddlTipoIdentificacionEsposo_SelectedIndexChanged(object sender, EventArgs e)
        {
            //se asigna el tamano a aceptar para el campo identificación

            if (ddlTipoIdentificacionEsposo.SelectedItem.Text == "Cédula")
            {
                CedulaEsposo.Mask = "999999999";
                mskCedulaEsposo.Text = "";
                mskCedulaEsposo.Enabled = true;
                //ActivarBotones();
                mskCedulaEsposo.Focus();
            }
            if (ddlTipoIdentificacionEsposo.SelectedItem.Text == "Pasaporte")
            {
                CedulaEsposo.Mask = "999999999999";
                mskCedulaEsposo.Text = "";
                mskCedulaEsposo.Enabled = true;
               // ActivarBotones();
                mskCedulaEsposo.Focus();
            }
            if ((ddlTipoIdentificacionEsposo.SelectedItem.Text == "Cédula Residencia Permanente") || (ddlTipoIdentificacionEsposo.SelectedItem.Text == "Cédula Residencia Temporal"))
            {
                CedulaEsposo.Mask = "9999999999999999";
                mskCedulaEsposo.Text = "";
                mskCedulaEsposo.Enabled = true;
               // ActivarBotones();
                mskCedulaEsposo.Focus();
            }
        }

       protected void ddlTipoIdentificacionEsposa_SelectedIndexChanged(object sender, EventArgs e)
        {
            //se asigna el tamano a aceptar para el campo identificación

            if (ddlTipoIdentificacionEsposa.SelectedItem.Text == "Cédula")
            {
                Cedula.Mask = "999999999";
                mskCedulaEsposa.Text = "";
                mskCedulaEsposa.Enabled = true;
                //ActivarBotones();
                mskCedulaEsposa.Focus();
            }
            if (ddlTipoIdentificacionEsposo.SelectedItem.Text == "Pasaporte")
            {
                Cedula.Mask = "999999999999";
                mskCedulaEsposa.Text = "";
                mskCedulaEsposa.Enabled = true;
               // ActivarBotones();
                mskCedulaEsposa.Focus();
            }
            if ((ddlTipoIdentificacionEsposa.SelectedItem.Text == "Cédula Residencia Permanente") || (ddlTipoIdentificacionEsposa.SelectedItem.Text == "Cédula Residencia Temporal"))
            {
                Cedula.Mask = "9999999999999999";
                mskCedulaEsposa.Text = "";
                mskCedulaEsposa.Enabled = true;
               // ActivarBotones();
                mskCedulaEsposa.Focus();
            }
        }
       
    


        #region ** Consecutivos Libros Parroquia

        public int ObtenerParametroLibro()
        {

            _dtparametro = _bll.ObtenerParametroMatrimonio(_valparametro1, parroquia);
            if (Convert.ToInt32(_dtparametro[0].Valor) == 0) //valida si el parametro es 0 y lo inicializa a 1
            { _dtoMatrimonio.NumLibro = Convert.ToInt32(_dtparametro[0].Valor) + 1; }
            else
            {
                _dtoMatrimonio.NumLibro = Convert.ToInt32(_dtparametro[0].Valor + 1);
            }
            return _dtoMatrimonio.NumLibro;

        }

        public int ObtenerParametroFolio()
        {

            _dtparametro = _bll.ObtenerParametroMatrimonio(_valparametro2, parroquia);
            if (Convert.ToInt32(_dtparametro[0].Valor) == 0) //valida si el parametro es 0 y lo inicializa a 1
            { _dtoMatrimonio.NumFolio = Convert.ToInt32(_dtparametro[0].Valor) + 1; }
            else
            {
                _dtoMatrimonio.NumFolio = Convert.ToInt32(_dtparametro[0].Valor + 1);
            }
            return _dtoMatrimonio.NumFolio;

        }

        public int ObtenerParametroAsiento()
        {

            _dtparametro = _bll.ObtenerParametroMatrimonio(_valparametro3, parroquia);
            if (Convert.ToInt32(_dtparametro[0].Valor) == 0) //valida si el parametro es 0 y lo inicializa a 1
            { _dtoMatrimonio.NumAsiento = Convert.ToInt32(_dtparametro[0].Valor) + 1; }
            else
            {
                _dtoMatrimonio.NumAsiento = Convert.ToInt32(_dtparametro[0].Valor + 1);
            }
            return _dtoMatrimonio.NumAsiento;

        }

        public void ActualizaParametrosConfirma()
        {
            //Actualizar la tabla Parametro el valor para el libro
            parroquia = Convert.ToInt16(Session["Parroquia"]);
            _dtparametro = _bll.ObtenerParametroMatrimonio(_valparametro1, parroquia);
            _dtoparametro.IdParametro = _dtparametro[0].IdParametro;
            _dtoparametro.Descripcion = _dtparametro[0].Descripcion;
            _dtoparametro.Valor = _dtparametro[0].Valor + 1;
            _dtoparametro.IdParroquia = _dtparametro[0].IdParroquia;
            _resp = _bll.RegistrarParametroMatrimonio(_dtoparametro);

            //Actualizar la tabla Parametro el valor para el asiento

            _dtparametro = _bll.ObtenerParametroMatrimonio(_valparametro3, parroquia);
            _dtoparametro.IdParametro = _dtparametro[0].IdParametro;
            _dtoparametro.Descripcion = _dtparametro[0].Descripcion;
            _dtoparametro.Valor = _dtparametro[0].Valor + 1;
            _dtoparametro.IdParroquia = _dtparametro[0].IdParroquia;
            _resp = _bll.RegistrarParametroMatrimonio(_dtoparametro);

            //Actualizar la tabla Parametro el valor para el folio

            _dtparametro = _bll.ObtenerParametroMatrimonio(_valparametro2, parroquia);
            _dtoparametro.IdParametro = _dtparametro[0].IdParametro;
            _dtoparametro.Descripcion = _dtparametro[0].Descripcion;
            _dtoparametro.Valor = _dtparametro[0].Valor + 1;
            _dtoparametro.IdParroquia = _dtparametro[0].IdParroquia;
            _resp = _bll.RegistrarParametroMatrimonio(_dtoparametro);
        }

        protected void Cancelar(object sender, EventArgs e)
        {

            Response.Redirect("ListadoMatrimonios.aspx"); // Retorna al listado de matrimonios
        }

        #endregion

        #region ** Búsquedas

        /// <summary>
        /// Obtiene la información del esposo
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BuscarEsposo(object sender, EventArgs e)
        {
            if ((Convert.ToInt16(ddlTipoIdentificacionEsposo.SelectedValue) == 0) && (mskCedulaEsposo.Text == ""))
            {
                WebMsgBox.Show("Existen campos pendientes de completar, favor verifique los datos del Confirmando");
            }
            else 
            {
                if ((Convert.ToInt16(ddlTipoIdentificacionEsposo.SelectedValue) == 0) || (mskCedulaEsposo.Text == ""))
                {
                    WebMsgBox.Show("Existen campos pendientes de completar, favor verifique los datos del Confirmando");
                }
                else
                {
                    _dtopersona.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacionEsposo.SelectedValue);
                    _dtopersona.Identificacion = mskCedulaEsposo.Text;
                    _dtpersona = _bll.ObtenerPersona(_dtopersona);// se consulta por medio de la identificación 
                    if (_dtpersona.Count == 0) 
                    {
                        WebMsgBox.Show("La información de la persona no está registrado. Por favor realizar el registro en el  mantenimiento de feligreses.");

                    }
                    else  //else if (Existe_Persona (_dtopersona))
                    {
                        txtNombreEsposo.Text = _dtpersona[0].Nombre + " " + _dtpersona[0].Apellido1 + " " + _dtpersona[0].Apellido2;
                    }
                       
                    }
                }
            }
        
                /// <summary>
        /// Obtiene la información de la esposa
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BuscarEsposa(object sender, EventArgs e)
        {
            if ((Convert.ToInt16(ddlTipoIdentificacionEsposa.SelectedValue) == 0) && (mskCedulaEsposo.Text == ""))
            {
                WebMsgBox.Show("Existen campos pendientes de completar, favor verifique los datos del Confirmando");
            }
            else 
            {
                if ((Convert.ToInt16(ddlTipoIdentificacionEsposa.SelectedValue) == 0) || (mskCedulaEsposa.Text == ""))
                {
                    WebMsgBox.Show("Existen campos pendientes de completar, favor verifique los datos del Confirmando");
                }
                else
                {
                    _dtopersona.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacionEsposa.SelectedValue);
                    _dtopersona.Identificacion = mskCedulaEsposa.Text;
                    _dtpersona = _bll.ObtenerPersona(_dtopersona);// se consulta por medio de la identificación 
                    if (_dtpersona.Count == 0) 
                    {
                        WebMsgBox.Show("La información de la persona no está registrado. Por favor realizar el registro en el mantenimiento de feligreses.");

                    }
                    else  //else if (Existe_Persona (_dtopersona))
                    {
                        txtNombreEsposa.Text = _dtpersona[0].Nombre + " " + _dtpersona[0].Apellido1 + " " + _dtpersona[0].Apellido2;
                    }
                       
                    }
                }
            }

            
        /// <summary>
        /// Obtiene la información de la Madrina
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BuscarMadrina(object sender, EventArgs e)
        {
            if ((Convert.ToInt16(ddlTipoIdentificacionMadrina.SelectedValue) == 0) && (mskCedulaMadrina.Text == ""))
            {
                WebMsgBox.Show("Existen campos pendientes de completar, favor verifique los datos de los padrinos");
            }
            else
            {
                if ((Convert.ToInt16(ddlTipoIdentificacionMadrina.SelectedValue) == 0) || (mskCedulaMadrina.Text == ""))
                {
                    WebMsgBox.Show("Existen campos pendientes de completar, favor verifique los datos de los padrinos");
                }
                else
                {
                    _dtopersona.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacionMadrina.SelectedValue);
                    _dtopersona.Identificacion = mskCedulaMadrina.Text;
                    _dtpersona = _bll.ObtenerPersona(_dtopersona);// se consulta por medio de la identificación 
                    if (_dtpersona.Count == 0)
                    {
                        WebMsgBox.Show("La información de la persona no está registrado. Por favor realizar el registro en el mantenimiento de feligreses.");

                    }
                    else
                    {
                        txtNombreMadrina.Text = _dtpersona[0].Nombre + " " + _dtpersona[0].Apellido1 + " " + _dtpersona[0].Apellido2;
                       
                    }
                }
            }
        }

    
        /// <summary>
        /// Obtiene la información del padrino
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BuscarPadrino(object sender, EventArgs e)
        {
            if ((Convert.ToInt16(ddlTipoIdentificacionPadrino.SelectedValue) == 0) && (mskCedulaPadrino.Text == ""))
            {
                WebMsgBox.Show("Existen campos pendientes de completar, favor verifique los datos de los padrinos");
            }
            else
            {
                if ((Convert.ToInt16(ddlTipoIdentificacionPadrino.SelectedValue) == 0) || (mskCedulaPadrino.Text == ""))
                {
                    WebMsgBox.Show("Existen campos pendientes de completar, favor verifique los datos de los padrinos");
                }
                else
                {
                    _dtopersona.TipoIdentificacion = Convert.ToInt16(ddlTipoIdentificacionPadrino.SelectedValue);
                    _dtopersona.Identificacion = mskCedulaPadrino.Text;
                    _dtpersona = _bll.ObtenerPersona(_dtopersona);// se consulta por medio de la identificación 
                    if (_dtpersona.Count == 0)
                    {
                        WebMsgBox.Show("La información de la persona no está registrado. Por favor realizar el registro en el mantenimiento de feligreses.");

                    }
                    else
                    {
                        txtNombrePadrino.Text = _dtpersona[0].Nombre + " " + _dtpersona[0].Apellido1 + " " + _dtpersona[0].Apellido2;
                       
                    }
                }
            }
        }

        #endregion

        #region ** Llenado de combos
        /// <summary>
        /// Obtiene la información del sacerdote que esta ligado a la parroquia que registra la confirma
        /// </summary>
        /// <param name="parroquia"></param>
        public void ObtenerSacerdote(int parroquia)
        {
            _dtclerigo = _bll.ObtenerClerigoxParroquia(parroquia);
            ddlSacerdote.DataSource = _dtclerigo;
            ddlSacerdote.DataValueField = "Identificacion";
            ddlSacerdote.DataTextField = "NombreCompleto";
            ddlSacerdote.DataBind();
            ddlSacerdote.Items.Insert(0, new ListItem("Seleccionar Clérigo", "0 - 0"));
        }

        /// <summary>
        /// Obtiene los tipos de identificación del confirmando, padres y padrinos
        /// </summary>
        public void ObtenerTiposId()
        {
            _dttiposid = _bll.ObtenerTiposId();
            ddlTipoIdentificacionEsposo.DataSource = _dttiposid;
            ddlTipoIdentificacionEsposo.DataValueField = "Id";
            ddlTipoIdentificacionEsposo.DataTextField = "Descripcion";
            ddlTipoIdentificacionEsposo.DataBind();
            ddlTipoIdentificacionEsposo.Items.Insert(0, new ListItem("Seleccionar Tipo Identificacion", "0"));
           
            //Tipos de identificacion del padrinos
            ddlTipoIdentificacionPadrino.DataSource = _dttiposid;
            ddlTipoIdentificacionPadrino.DataValueField = "Id";
            ddlTipoIdentificacionPadrino.DataTextField = "Descripcion";
            ddlTipoIdentificacionPadrino.DataBind();
            ddlTipoIdentificacionPadrino.Items.Insert(0, new ListItem("Seleccionar Tipo Identificacion", "0"));

            //Tipos de identificacion de la madrina
            ddlTipoIdentificacionMadrina.DataSource = _dttiposid;
            ddlTipoIdentificacionMadrina.DataValueField = "Id";
            ddlTipoIdentificacionMadrina.DataTextField = "Descripcion";
            ddlTipoIdentificacionMadrina.DataBind();
            ddlTipoIdentificacionMadrina.Items.Insert(0, new ListItem("Seleccionar Tipo Identificacion", "0"));

            //Tipos de identificacion de la esposa
            ddlTipoIdentificacionEsposa.DataSource = _dttiposid;
            ddlTipoIdentificacionEsposa.DataValueField = "Id";
            ddlTipoIdentificacionEsposa.DataTextField = "Descripcion";
            ddlTipoIdentificacionEsposa.DataBind();
            ddlTipoIdentificacionEsposa.Items.Insert(0, new ListItem("Seleccionar Tipo Identificacion", "0"));

        }

        #endregion

        #region ** Validaciones

        public void CleanControl(ControlCollection controles)
        {
            foreach (Control control in controles)
            {
                if (control is TextBox)
                    ((TextBox)control).Text = string.Empty;
                else if (control is DropDownList)
                    ((DropDownList)control).ClearSelection();
                else if (control is RadioButtonList)
                    ((RadioButtonList)control).ClearSelection();
                else if (control is CheckBoxList)
                    ((CheckBoxList)control).ClearSelection();
                else if (control is RadioButton)
                    ((RadioButton)control).Checked = false;
                else if (control is CheckBox)
                    ((CheckBox)control).Checked = false;
                else if (control.HasControls())   //Esta linea detécta un Control que contenga otros Controles                    
                    //Así ningún control se quedará sin ser limpiado.                   
                    CleanControl(control.Controls);
            }
        }
        #endregion
    }

    }

